From 8c71f5197b379f9add4fe82f1c1a328db4c99c6e Mon Sep 17 00:00:00 2001 From: "emellor@leeni.uk.xensource.com" Date: Mon, 21 Nov 2005 12:41:39 +0100 Subject: [PATCH] Added unit test for the DevController subclasses. Signed-off-by: Ewan Mellor --- tools/python/setup.py | 1 + .../python/xen/xend/server/tests/__init__.py | 1 + .../xen/xend/server/tests/test_controllers.py | 81 +++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 tools/python/xen/xend/server/tests/__init__.py create mode 100644 tools/python/xen/xend/server/tests/test_controllers.py diff --git a/tools/python/setup.py b/tools/python/setup.py index 3a9c5d013e..79b9730a1a 100644 --- a/tools/python/setup.py +++ b/tools/python/setup.py @@ -45,6 +45,7 @@ setup(name = 'xen', 'xen.sv', 'xen.xend.tests', + 'xen.xend.server.tests', 'xen.xm.tests' ], ext_package = "xen.lowlevel", diff --git a/tools/python/xen/xend/server/tests/__init__.py b/tools/python/xen/xend/server/tests/__init__.py new file mode 100644 index 0000000000..8d1c8b69c3 --- /dev/null +++ b/tools/python/xen/xend/server/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/tools/python/xen/xend/server/tests/test_controllers.py b/tools/python/xen/xend/server/tests/test_controllers.py new file mode 100644 index 0000000000..16b7941e5a --- /dev/null +++ b/tools/python/xen/xend/server/tests/test_controllers.py @@ -0,0 +1,81 @@ +import os +import re +import unittest + +import xen.xend.XendRoot + +xen.xend.XendRoot.XendRoot.config_default = '/dev/null' + +from xen.xend.server import netif + + +FAKE_DOMID = 42 +FAKE_DEVID = 63 + + +xroot = xen.xend.XendRoot.instance() + + +class test_controllers(unittest.TestCase): + + def testNetif(self): + controller = self.controllerInstance(netif.NetifController) + + self.assertNetif(controller.getDeviceDetails(['vif']), None) + self.assertNetif( + controller.getDeviceDetails( + ['vif', ['mac', 'aa:bb:cc:dd:ee:ff']]), + 'aa:bb:cc:dd:ee:ff') + + + def assertNetif(self, results, expectedMac): + + (devid, backdets, frontdets) = results + + self.assertEqual(devid, FAKE_DEVID) + + self.assertEqual(backdets['handle'], str(FAKE_DEVID)) + self.assertEqual(backdets['script'], + os.path.join(xroot.network_script_dir, + xroot.get_vif_script())) + self.assertValidMac(backdets['mac'], expectedMac) + + self.assertEqual(frontdets['handle'], str(FAKE_DEVID)) + self.assertValidMac(frontdets['mac'], expectedMac) + + + MAC_REGEXP = re.compile('^' + + ':'.join([r'[0-9a-f][0-9a-f]' + for i in range(0, 6)]) + + '$') + + def assertValidMac(self, mac, expected): + if expected: + self.assertEqual(mac, expected) + else: + self.assert_(self.MAC_REGEXP.match(mac)) + + + def controllerInstance(self, cls): + """Allocate an instance of the given controller class, and override + methods as appropriate so that we can run tests without needing + Xenstored.""" + + result = cls(FakeXendDomainInfo()) + + result.allocateDeviceID = fakeID + + return result + + +class FakeXendDomainInfo: + def getDomainPath(self): + return "/test/fake/domain/%d/" % FAKE_DOMID + + +def fakeID(): + return FAKE_DEVID + + +def test_suite(): + return unittest.makeSuite(test_controllers) -- 2.30.2